export interface RequestOptions {
  method?: 'GET' | 'POST' | 'PUT' | 'DELETE' | 'PATCH' | 'HEAD' | 'OPTIONS';
  headers?: Record<string, string>;
  data?: any;
  params?: Record<string, any>;
  timeout?: number;
  signal?: AbortSignal;
  [key: string]: any;
}

export interface ResponseData<T = any> {
  status: number;
  statusText: string;
  headers: Record<string, string>;
  data: T;
}

export interface HttpAdapter {
  <T>(url: string, options: RequestOptions): Promise<ResponseData<T>>;
}
